#ifndef BATTLECITY_H
#define BATTLECITY_H

#include <Ogre.h>

#include<vector>
#include"GameState.h"
#include"InputManager.h"
#include"Singleton.h"

class Battlecity : public Singleton<Battlecity>
{
    public:
        enum StateName{ INTRO, MAIN_MENU, PAUSE_MENU, PLAY, LOADING, SAVE_LOAD };
        Battlecity();
        ~Battlecity();
        void loadResource();
        int startup();
        void run();
        void createScene();
        void setCurrentState(GameState *state);

protected:
private:
    //root con relativo scenemanager, viewport e camera globali
    Ogre::Root* mRoot;
    Ogre::RenderWindow *mWindow;
    Ogre::SceneManager* mSceneManager;
    Ogre::Camera *mCamera;
    Ogre::Viewport *mViewPort;
    //input manager globale
    InputManager *mInputManager;
    GameState *mCurrentState;
    //vettore di stati
   // std::vector<GameState*> mStateVector;
    //posizione stato corrente in mStateVector



};

#endif // BATTLECITY_H
